package org.zjt.design.pattern;
import static java.lang.System.out;
/**
 * @author <a href="juntao.zhang@qq.com">juntao.zhang</a>
 * @Description: 策略模式
 * @Package org.zjt.design.pattern
 * @date 2018/5/8 17:30
 *
 * 使用场景：
    ● 多个类只有在算法或行为上稍有不同的场景。
    ● 算法需要自由切换的场景。
    ● 需要屏蔽算法规则的场景。
 */
public class StrategyTest {

    public static void main(String[] args) {
        out.println(Calculator.ADD.exec(2,3));
    }
}


/**
 * 策略模式。使用 + 、- 两种策略
 */
enum Calculator {

    //加法运算
    ADD("+"){
        @Override
        public int exec(int a,int b){
            return a+b;
        }
    },
    //减法运算
    SUB("-"){
        @Override
        public int exec(int a,int b){
            return a - b;
        }
    };
    String value  ;

    Calculator(String _value){
        this.value = _value;
    }
    public String getValue(){
        return this.value;
    }

    public abstract int exec(int a,int b);
}